package com.easylinkin.linkappapi.alarm.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.easylinkin.linkappapi.device.entity.Device;
import java.io.Serializable;
import java.util.Date;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 告警信息（告警工单）
 * </p>
 *
 * @author Tongjie
 * @since 2020-04-25
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("linkapp_alarm")
@ApiModel("告警(Alarm)实体类")
public class Alarm extends Model<Alarm> implements Serializable{

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId("id")
    @ApiModelProperty("主键ID")
    private String id;

    /**
     * 设备编号
     */
    @TableField("device_code")
    @ApiModelProperty("设备编码")
    private String deviceCode;

    /**
     * 告警相关数据
     */
    @TableField("alarm_data")
    @ApiModelProperty("告警相关数据")
    private String alarmData;


    /**
     * 设备名称
     */
    @TableField(exist = false)
    @ApiModelProperty("设备名称")
    private String deviceName;

    /**
     * 规则引擎名称
     */
    @TableField(exist = false)
    @ApiModelProperty("规则引擎名称")
    private String ruleEngineName;

    /**
     * 告警内容
     */
    @TableField("content")
    @ApiModelProperty("告警内容")
    private String content;

    /**
     * 规则引擎id
     */
    @TableField("rule_engine_id")
    @ApiModelProperty("规则引擎id")
    private String ruleEngineId;

    @TableField(exist = false)
    private AlarmProcess alarmProcess;

    /**
     * 设备 查询条件
     */
    @ApiModelProperty("设备 查询条件")
    @TableField(exist = false)
    private Device device;

    /**
     * 处理状态；1未处理，2已处理，其他值-其他
     */
    @ApiModelProperty("处理状态；1未处理，2已处理，其他值-其他")
    @TableField("status")
    private Integer status;

    /**
     * 告警等级；1高，2中，3低
     */
    @ApiModelProperty("告警等级；1高，2中，3低")
    @TableField("level")
    private Integer level;

    /**
     * 租户id
     */
    @ApiModelProperty("租户id")
    @TableField("tenant_id")
    private String tenantId;

    /**
     * 告警时间
     */
    @ApiModelProperty("告警时间")
    @TableField("alarm_time")
    private Date alarmTime;

    /**
     * 设备原始报文
     */
    @ApiModelProperty("设备原始报文")
    @TableField("source_json")
    private String sourceJson;

    /**
     * 视频地址链接
     */
    @ApiModelProperty("视频地址链接")
    @TableField("video_Url")
    private String videoUrl;

    @ApiModelProperty("查询参数，查询需要哪些字段，该字段传任意值，不传null就代表需要查询的")
    @TableField(exist = false)
    private Alarm requiredParam;


    @TableField(exist = false)
    private AlarmTemplate alarmTemplate;

    /**
     * 查询时间起始
     */
    @ApiModelProperty("查询时间起始")
    @TableField(exist = false)
    private String queryTimeStart;
    /**
     * 查询时间起始
     */
    @ApiModelProperty("查询时间起始")
    @TableField(exist = false)
    private String queryTimeEnd;


    @TableField(exist = false)
    String statisticsTimeType;

    /**
     * 资产ID
     */
    @TableField(exist = false)
    String assetId;

    /**
     * 查询用 配电房id
     */
    @ApiModelProperty("查询用 配电房id")
    @TableField(exist = false)
    String distributionRoomId;

    /**
     * 设备类型名称
     */
    @ApiModelProperty("设备类型名称")
    @TableField(exist = false)
    String deviceTypeName;

    /**
     * 设备类型名称集合
     */
    @TableField(exist = false)
    @ApiModelProperty("设备类型名称集合")
    private List<String> deviceTypeNames;

    /**
     * 设备区域
     */
    @ApiModelProperty("设备区域")
    @TableField(exist = false)
    String deviceAreaPath;

    /***
     * 标识类型 1 告警，2 指标告警
     */
    @ApiModelProperty("标识类型 1 告警，2 指标告警")
    @TableField(exist = false)
    Integer identificationType;

    /**
     * 项目名称
     */
    @TableField(exist = false)
    private String platformProjectName;

    @TableField(exist = false)
    private String projectCode;


    @Override
    protected Serializable pkVal() {
        return this.id;
    }

}
